# 实例属性：实例属性是实例对象所拥有的属性，实例属性与实例对象一一对应。
# 实例属性怎么添加？
# 1、通过实例名.属性名添加；2、在类中定义实例属性（构造函数、实例方法）
class Person:
    name = '小王'
    age = 18

class Text:
    # 在类里面定义，通过self.属性名 = 值来定义，只要支持self参数，都可以添加实例属性
    def __init__(self,username,age):
        # 定义实例属性，因为在类中定义的，所以每个实例都会有
        self.username = username
        self.age = age

    # 实例方法-无参
    def show(self):
        # 也可以添加实例属性，但必须是show方法调用成功了，才能添加成功
        self.addr = 'beijing'
        print(f'[我的姓名是：{self.username}, 我的年龄是：{self.age}]')

    # 实例方法-传参
    def info(self, phone):
        self.phone = phone
        print(f'[我的姓名是：{self.username}, 我的年龄是：{self.age}, 我的电话是：{self.phone}]')

def start_Person():
    person1 = Person()
    print(person1.name)
    print(person1.age)
    # 添加实例属性，实例属性只会影响当前的实例对象，不会影响其他实例
    person1.addr = '上海'
    print(person1.addr)
    person2 = Person()
    # print(person2.addr)   # AttributeError: 'Person' object has no attribute 'addr'

def start_Text():
    text1 = Text('cendy',22)
    print(text1.username)   # cendy
    print(text1.age)    # 22
    # print(text1.addr) # 报错，未调用show方法，因为实例属性addr没添加【AttributeError: 'Text' object has no attribute 'addr'】
    # 实例方法在调用时，不需要给self传参，因为python会自动处理
    text1.show()    # [我的姓名是：cendy, 我的年龄是：22]
    print(text1.addr)   # beijing
    # text1.info()    #报错，因为info方法没有传参
    text1.info('13888888888')   # [我的姓名是：cendy, 我的年龄是：22, 我的电话是：13888888888]


if __name__ == '__main__':
    # start_Person()
    start_Text()